package com.diandi.activity.mapper;

import com.diandi.ddsb.bean.Staff;
import com.diandi.ddsb.vo.StaffDto;
import com.diandi.ddsb.vo.StaffVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户影身
 * 
 */
public interface CenterStaffMapper extends BaseMapper {

	/**
	 * 新增用户信息
	 * 
	 * @param Staff
	 * @return
	 */
	public int insertStaff(Staff staff);

	/**
	 * 修改用户信息
	 * 
	 * @param Staff
	 * @return
	 */
	public int updateStaff(Staff staff);

	/**
	 * 管理员修改用户信息
	 * 
	 * @param staff
	 * @return
	 */

	public int updateStaffAdmin(Staff staff);

	/**
	 * 删除用户信息
	 * 
	 * @param cmId
	 * @return
	 */
	public void deleteStaff(Long id);

	/**
	 * 根据id查询用户信息
	 * 
	 * @param cmId
	 * @return
	 */
	public Staff findStaff(@Param(value = "id") Long id);

	/**
	 * 根据名称查询用户信息
	 * 
	 * @param name
	 * @return
	 */
	public List<StaffDto> findStaffByNickname(String name);

	/**
	 * 查询所有用户信息
	 * 
	 * @return
	 */
	public List<StaffDto> findAllStaff(Map paramMap);

	/**
	 * 根据email查询管理用户
	 * 
	 * @param ccmId
	 * @return
	 */
	public Staff findByNickname(@Param(value = "nickname") String email);

	/**
	 * 根据email查询管理用户
	 * 
	 * @param ccmId
	 * @return
	 */
	public StaffDto findStaffVoByEmail(String email);

	/**
	 * 更新密码
	 * 
	 * @param staff
	 * @return
	 */
	public int updateStaffPassword(Staff staff);

	/**
	 * 根据条件查询用户
	 * 
	 * @param condition
	 * @return
	 */
	List<StaffDto> findStaffByCondition(Map condition);

	public int updateStaffPassword(@Param(value = "id") long id,
                                   @Param(value = "password") String password);

	/**
	 * 根据角色查询用户
	 * 
	 * @param roleId
	 * @return
	 */
	public List<StaffDto> findStaffByRoleId(long roleId);

	/**
	 * 获取后台用户管理条数
	 * 
	 * @param paramMap
	 * @return
	 */

	public Integer getStaffVoCount(Map paramMap);

	/**
	 * 更新staff信息
	 * 
	 * @param email
	 * @param id
	 * @return
	 */

	public Integer findStaffByEmailAndNotId(@Param("email") String email, @Param("id") Long id);

	/**
	 * 获取符合条件的机构人员列表
	 * 
	 * @param paramMap
	 * @return
	 */
	public List<StaffVo> getPrivStaffVo(Map paramMap);

	/**
	 * 根据属性查询机构人员
	 * 
	 * @return
	 */
	public Staff findStaffByProperty(Map paramMap);

	public Staff findStaffById(@Param(value = "id") Long id);

	/**
	 * 查询机构下的人员数量
	 */
	public int getStaffCountByAgency(@Param(value = "agency") Long agency);

	/**
	 * 根据属性查询机构人员
	 * 
	 * @return
	 */
	public List<Staff> findStaffByProperties(Map paramMap);

	/**
	 * 更新领导
	 * 
	 * @param paramMap
	 * @return
	 */
	public boolean updateLeader(Map paramMap);

	public List<StaffVo> getPrivStaffVoGeneral(Map<String, Object> paramMap);

	public Integer getStaffVoCountGeneral(Map<String, Object> paramMap);

	public int updateStaffNew(StaffVo staff);

	public List<StaffVo> findStaffVoByProperties(Map paramMap);

}
